/*
 * mixin list
 */
import PageList from '@/components/PageList'
import ListTable from '@/components/ListTable'
const mixin = {
  components: {
    PageList, // 分页
    ListTable // 列表
  },
  data() {
    return {
      // 列表数据
      tableData: [],
      // 是否开启loading
      tableLoading: false
    }
  },
  watch: {
    $route() {
      let keyList = Object.keys(this.$route.query)
      if (keyList.length > 0) {
        // 路由改变时查询
        this.getList(this.$route.query)
      }
    }
  },
  // 进入页面查询列表
  mounted () {
    // 查询
    this.getList()
  },
  methods: {
    getList() {
      // 开启 loading
      this.tableLoading = true
      // 关闭 loading
      this.tableLoading = false
      
    },
    // 设置路由，也就是查询参数
    $_setQuery(query) {
      const newQuery = Object.assign({}, this.$route.query, query)
      const equalObj = {
        ...this.$route.query
      }
      // 判断是否有参数
      if (!this._.isEqual(newQuery, equalObj)) {
        this.$router
          .push({
            query: newQuery // 设置新参数
          })
          .catch(err => {
            err
          })
      }
    },
    // 组件的查询按钮
    handleSearch(search) {
      this.$_setQuery(search)
    },
    // 组件的重置按钮
    handleReset(search) {
      this.$_setQuery(search)
    },
    busRefreshList() {
      const { page = 1 } = this.$route.query
      if (page === 1) {
        this.getList()
      } else {
        this.$_setQuery({ page: 1 })
      }
    },
    // 删除操作
    $_delConfirm(msg, yesCb, noCb) {
      this.$confirm(`此操作将永久删除${msg}, 是否继续?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        yesCb && yesCb()
      }).catch(() => {
        noCb && noCb()
        this.$message({
          type: 'info',
          message: '已取消删除'
        })
      })
    }
  }
}
export default mixin
